package edu.eam.gruposenior.gestorLEcciones.entidades;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;
import java.util.List;

/**
 * The persistent class for the proyecto database table.
 * 
 */
@Entity
@NamedQueries({
		@NamedQuery(name = Proyecto.FIND_ALL, query = "select p from Proyecto p"),
		@NamedQuery(name = Proyecto.FIND_PROYECTO_BY_NOMBRE, query = "select p from Proyecto p where p.nombre=:"
				+ Proyecto.PARAMETRO_NOMBRE) })
public class Proyecto implements Serializable {

	/**
	 * Constante para la named Query de buscar todos los Proyectos.
	 */
	public static final String FIND_ALL = "Proyecto.findAll";

	public static final String FIND_PROYECTO_BY_NOMBRE = "Proyecto.findProyectoByNombre";

	public static final String PARAMETRO_NOMBRE = "nombre";

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	private String descripcion;

	private Boolean estado;

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha_fin")
	private Date fechaFin;

	@Temporal(TemporalType.DATE)
	@Column(name = "fecha_inicio")
	private Date fechaInicio;

	private int iteraciones;

	@Column(unique = true)
	private String nombre;

	// bi-directional many-to-one association to LeccionAprendida
	@OneToMany(mappedBy = "proyectoBean", fetch = FetchType.EAGER)
	private List<LeccionAprendida> leccionAprendidas;

	// bi-directional many-to-one association to TipoProyecto
	@ManyToOne
	@JoinColumn(name = "tipo_proyecto")
	private TipoProyecto tipoProyectoBean;

	// bi-directional many-to-one association to ProyectoTecnologia
	@OneToMany(mappedBy = "proyectoBean", fetch = FetchType.EAGER)
	private List<ProyectoTecnologia> proyectoTecnologias;

	// bi-directional many-to-one association to UsuarioProyecto
	@OneToMany(mappedBy = "proyectoBean", fetch = FetchType.EAGER)
	private List<UsuarioProyecto> usuarioProyectos;

	public Proyecto() {
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Date getFechaFin() {
		return this.fechaFin;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public Date getFechaInicio() {
		return this.fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public int getIteraciones() {
		return this.iteraciones;
	}

	public void setIteraciones(int iteraciones) {
		this.iteraciones = iteraciones;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public List<LeccionAprendida> getLeccionAprendidas() {
		return this.leccionAprendidas;
	}

	public void setLeccionAprendidas(List<LeccionAprendida> leccionAprendidas) {
		this.leccionAprendidas = leccionAprendidas;
	}

	public TipoProyecto getTipoProyectoBean() {
		return this.tipoProyectoBean;
	}

	public void setTipoProyectoBean(TipoProyecto tipoProyectoBean) {
		this.tipoProyectoBean = tipoProyectoBean;
	}

	public List<ProyectoTecnologia> getProyectoTecnologias() {
		return this.proyectoTecnologias;
	}

	public void setProyectoTecnologias(
			List<ProyectoTecnologia> proyectoTecnologias) {
		this.proyectoTecnologias = proyectoTecnologias;
	}

	public List<UsuarioProyecto> getUsuarioProyectos() {
		return this.usuarioProyectos;
	}

	public void setUsuarioProyectos(List<UsuarioProyecto> usuarioProyectos) {
		this.usuarioProyectos = usuarioProyectos;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the estado
	 */
	public Boolean getEstado() {
		return estado;
	}

	/**
	 * @param estado
	 *            the estado to set
	 */
	public void setEstado(Boolean estado) {
		this.estado = estado;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return nombre;
	}

}